package com.wyh.domain.vo.groupOne.customer;

import com.baomidou.mybatisplus.annotation.TableName;
import com.wyh.domain.po.groupOne.customer.MasterDataContacts;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 客户表
 */
@TableName(value = "customer")
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "MasterDataCustomerVO", description = "测试客户")
public class MasterDataCustomerVO {
    /**
     * 客户ID，主键，自增
     */
    @ApiModelProperty("客户ID")
    private Integer id;

    /**
     * 客户类型，0企业、1个体户、2个人
     */
    @ApiModelProperty(value = "客户类型 0:企业 1:个体户 2:个人",required = true)
    private Integer type;

    /**
     * 客户名称
     */
    @ApiModelProperty(value = "客户名称",required = true)
    private String name;

    /**
     * 客户手机号
     */
    @ApiModelProperty(value = "客户手机号",required = true)
    @Pattern(regexp = "^1\\d{10}$", message = "手机号必须是11位数字，且以1开头")
    @NotNull(message = "手机号不能为空")
    private String telephone;

    /**
     * 统一社会信用码
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty(value = "统一社会信用码",required = true)
    @Length(max = 255, message = "编码长度不能超过255")
    @Pattern(regexp = "^[A-Za-z0-9]{15}|[A-Za-z0-9]{18}|[A-Za-z0-9]{20}$", message = "统一社会信用码需为15、18或20位数字或英文字符")
    @NotNull(message = "统一社会信用码不能为空")
    private String creditcode;

    /**
     * 企业性质
     */
    @ApiModelProperty("企业性质")
    private Integer enterprisenature;

    /**
     * 经营性质
     */
    @ApiModelProperty("经营性质")
    private Integer businessnature;

    /**
     * 电子邮件
     */
    @ApiModelProperty("电子邮件")
    @Email(message = "请输入有效的电子邮件地址")
    private String email;

    /**
     * 纳税身份，0小规模纳税人、1一般纳税人
     */
    @ApiModelProperty("纳税身份 0:小规模纳税人 1:一般纳税人")
    private Integer taxidentity;

    /**
     * 是否重点招商引资客户，0否、1是
     */
    @ApiModelProperty("是否重点招商引资客户 0:否 1:是")
    private Integer isinvestmentpromotion;

    /**
     * 开户行
     */
    @Size(min = 8, max = 30, message = "开户银行名称长度需在8到30字符之间")
    @ApiModelProperty("开户行")
    @Length(min = 8, max = 30, message = "开户银行名称长度需在8到30字符之间")
    private String openingbank;

    /**
     * 开户行账号
     */
    @Size(max = 25, message = "银行账号需为12到25位数字", min = 12)
    @ApiModelProperty("银行账号")
    @Length(max = 25, message = "银行账号需为12到25位数字", min = 12)
    @Pattern(regexp = "^\\d{12,25}$", message = "银行账号需为12到25位数字")
    private String bankaccount;

    /**
     * 注册资金
     */
    @ApiModelProperty("注册资金")
    @Pattern(regexp="^\\d+(\\.\\d{1,2})?$", message="注册资金必须为数字，并且最多保留两位小数")
    private String registeredcapital;

    /**
     * 人数
     */
    @ApiModelProperty("人数")
    @Pattern(regexp="[0-9]+", message="人数只能是数字")
    private String number;

    /**
     * 注册地址
     */
    @ApiModelProperty("注册地址")
    private String registeredaddress;

    /**
     * 办公地址
     */
    @ApiModelProperty("办公地址")
    private String officeaddress;

    /**
     * 状态 1.已启用   0.停用
     */
    @ApiModelProperty("状态 1.已启用   0.停用")
    private Integer state;

    /**
     * 营业执照
     */
    @ApiModelProperty("营业执照")
    private String businesslicense;

    /**
     * 涉诉，0涉诉、1不涉诉
     */
    @ApiModelProperty("涉诉，0涉诉、1不涉诉")
    private Integer lnvolvinglitigation;

    /**
     * 最后修改时间
     */
    @ApiModelProperty("最后修改时间")
    private String lastupdatetime;

    /**
     * 最后修改人id
     */
    @ApiModelProperty(value = "最后修改人id",required = true)
    private Integer userid;

    /**
     * 客户类型名称
     */
    @ApiModelProperty("客户类型名称")
    private String customerTypeName;

    /**
     * 最后修改人姓名
     */
    @ApiModelProperty("最后修改人姓名")
    private String updateUser;


    /**
     * 联系人列表
     */
    @ApiModelProperty("联系人列表")
    private List<MasterDataContacts> masterDataContactsList;

    /**
     * 注册号
     */
    @ApiModelProperty("注册号")
    private String registernumber;

    /**
     * 证件类型  0:身份证 1:护照 2:港澳证 3:台胞证 4:外国人居留证 5:其他
     */
    @ApiModelProperty("证件类型 0:身份证 1:护照 2:港澳证 3:台胞证 4:外国人居留证 5:其他")
    private Integer idtype;

    /**
     * 证件号码
     */
    @ApiModelProperty("证件号码")
    private String idnumber;


}
